//基于排列构建数组
/*给你一个 从 0 开始的排列 nums（下标也从 0 开始）。请你构建一个 同样长度 的数组 ans ，其中，对于每个 i（0 <= i < nums.length），都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans 。

从 0 开始的排列 nums 是一个由 0 到 nums.length - 1（0 和 nums.length - 1 也包含在内）的不同整数组成的数组。
1 <= nums.length <= 1000
0 <= nums[i] < nums.length
nums 中的元素 互不相同*/
int* buildArray(int* nums, int numsSize, int* returnSize) {
    int *arr=(int*)calloc(numsSize,sizeof(int));
    *returnSize=numsSize;
    for(int i=0;i<numsSize;i++)
    {
        arr[i]=nums[nums[i]];
    }  
    return arr;
}


//找出与数组相加的整数 I

/*给你两个长度相等的数组 nums1 和 nums2。

数组 nums1 中的每个元素都与变量 x 所表示的整数相加。如果 x 为负数，则表现为元素值的减少。

在与 x 相加后，nums1 和 nums2 相等 。当两个数组中包含相同的整数，并且这些整数出现的频次相同时，两个数组 相等 。

返回整数 x 。
1 <= nums1.length == nums2.length <= 100
0 <= nums1[i], nums2[i] <= 1000
测试用例以这样的方式生成：存在一个整数 x，使得 nums1 中的每个元素都与 x 相加后，nums1 与 nums2 相等。
*/
int addedInteger(int* nums1, int nums1Size, int* nums2, int nums2Size) {
    int sum1 = 0;
    int sum2 = 0;
    for (int i = 0; i < nums1Size; i++) {
        sum1 += nums1[i];
    }
    for (int i = 0; i < nums2Size; i++) {
        sum2 += nums2[i];
    }
    return (sum2-sum1)/nums1Size;
}